<html>
    <head>
        <title>开发过程中使用虚拟文件</title>
    </head>
    <body>
        <script>
            /*
                        五、在开发过程中处理嵌入式文件
                                将文件嵌入到程序集中并能够通过引用程序集（或添加NuGet包）从另一个项目中使用它对于创建可重用模块非常宝贵。
                                然而，这使得开发模块本身有点困难。

                                假设你正在开发一个包含嵌入式JavaScript文件的模块。
                                每当你更改此文件时，你必须重新编译项目，重新启动应用程序并刷新浏览器页面以进行更改。显然，这非常耗时且乏味。

                                需要的是应用程序能够在开发时直接使用物理文件，并且浏览器刷新反映JavaScript文件中所做的任何更改。
                                ReplaceEmbeddedByPhysical方法使这一切成为可能。

                                下面的示例显示了一个依赖于包含嵌入式文件的模块（MyModule）的应用程序。
                                应用程序可以在开发时访问模块的源代码。

                                    [DependsOn(typeof(MyModule))]
                                    public class MyWebAppModule : AbpModule
                                    {
                                        public override void ConfigureServices(ServiceConfigurationContext context)
                                        {
                                            var hostingEnvironment = context.Services.GetHostingEnvironment();

                                            if (hostingEnvironment.IsDevelopment()) // 在开发环境中
                                            {
                                                Configure<AbpVirtualFileSystemOptions>(options =>
                                                {
                                                    // 开发时，使用物理文件替换嵌入式文件
                                                    options.FileSets.ReplaceEmbeddedByPhysical<MyModule>(
                                                        Path.Combine( // 指定物理文件路径
                                                            hostingEnvironment.ContentRootPath,
                                                            string.Format(
                                                                "..{0}MyModuleProject",
                                                                Path.DirectorySeparatorChar
                                                            )
                                                        )
                                                    );
                                                });
                                            }
                                        }
                                    }
                                上面的代码假定MyWebAppModule和MyModule是Visual Studio解决方案中的两个不同项目，并且MyWebAppModule依赖于MyModule。
                                应用程序启动模板已经对本地化文件使用了这种技术。因此，当你更改本地化文件时，它会自动检测到更改。
                    */
        </script>
    </body>
</html>